package com.itheima.exception;

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 使用注解开发异常处理器
 * 声明该类是一个Controller的通知类，声明后该类就会被加载成异常处理器
 *
 * 1. 什么情况下，程序会走到这个类的方法里面？。
 * 2. 如果业务层出现了一个  IllegalArgumentException, 改走哪个方法？
 *
 */
//@Component
//@ControllerAdvice
public class ExceptionAdvice {

    // 类中定义的方法携带@ExceptionHandler注解的会被作为异常处理器，后面添加实际处理的异常类型
    @ExceptionHandler(NullPointerException.class)
    @ResponseBody
    public String doNullException(Exception ex) {
        ex.printStackTrace();
        return "空指针异常";
    }

    @ExceptionHandler(ArithmeticException.class)
    @ResponseBody
    public String doArithmeticException(Exception ex) {
        return "ArithmeticException";
    }

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public String doException(Exception ex) {
        ex.printStackTrace();
        return "未知异常";
    }

}
